汇编语言之子程序 |
您所在的位置:网站首页 › 汇编 datapercpu › 汇编语言之子程序 |
(1)子程序的类型不同,对子程序的使用会带来什么不同
(2)子程序的定义该放在哪里?
(3)子程序和宏指令的区别?
子程序又称为过程,相当于高级语言的过程或函数,是一个独立的程序段,能完成某些确定的功能,并能被其它程序调用。 1)过程的定义 过程名 PROC 类型 。 。 。 RET 过程名 ENDP 类型:2种 near 段内,进程调用,偏移地址压入堆栈 far 段间, 2)过程的调用 CALL 过程名 a、段内调用 CSEG SEGMENT CALL SUBT MOV AH,4CH INT 21H SUBT PROC NEAR RET SUBT ENDP CSEG ENDSb、段间调用 XSEG SEGMENT . . . CALL SUBT1 . . . MOV AH,4CH INT 21H SUBT1 PROC FAR . . . RET SUBT1 ENDP XSEG ENDS YSEG SEGMENT . . . CALL SUBT1 . . . YSEG ENDS3)子程序在源程序中的位置 子程序一般是放在返回DOS语句和段结束语句之间的位置。因为在正常情况下这个区域的程序是不会被执行的。 4)宏指令与子程序 a、空间开销:子程序优于宏指令 b、时间开销:宏指令优于子程序 总上,当需多次访问的程序段较长,访问次数又不是太多时,选用子程序结构较好。当需多次访问的程序段较短,访问次数又很频繁时,选用宏指令结构更好。 5)子程序调用和宏调用使用例子: B、用宏指令方法编程 DATA SEGMENT HEXDATA DW 4D7EH RESULT DB 4 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX HEXASC MACRO CMP AL,OAH JB PLUS30 ADD AL,07H PLUS30: ADD AL,30H ENDM MOV CX,4 LEA SI,HEXDATA LEA DI,RESULT MOV BX,[SI] NEXT: MOV AX,BX AND AL,0FH HEXASC MOV [DI],AL INC DI PUSH CX MOV CX,4 SHR BX,CL POP CX LOOP NEXT LEA SI,RESULT+3 MOV CX,4 STD LOOP1: LODSB MOV DL,AL MOV AH,02H INT 21H LOOP LOOP1 MOV DL,'H' MOV AH,02H INT 21H MOV AH,4CH INT 21H CODE ENDS END START |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |